const mongoose = require('mongoose');

// 专门用来验证的模块
const Joi = require('joi');

// 创建集合规则
const userSchema = mongoose.Schema({
    name: {
        type: String,
        required: true,
        minlength: 2,
        maxlength: 10
    },
    email: {
        type: String,
        required: true,
        unique: true
    },
    password: {
        type: String,
        required: true,
        minlength: 6,
        maxlength: 16
    },
    role: String,
    // state(状态), 0启用 1禁用  默认0启用
    state: {
        type: Number,
        default: 0
    }
});

// 创建集合
const User = mongoose.model('User', userSchema);

// User.create({
//     name: '陈雨鑫',
//     email: '1711239692@qq.com',
//     password: 'chen1234',
//     role: 'admin',
//     state: 0
// })
// .then(() => {console.log('用户创建成功')})
// .catch(err => {console.log(err + '用户创建失败')});

// 创建验证规则
const validateUser = (user) => {
    let schema = {
        name: Joi.string().min(2).max(12).required().error(new Error('请输入2-12位的用户名')),
        email: Joi.string().email().required().error(new Error('邮箱格式不符合要求')),
        password: Joi.string().regex(/^\w{6,16}$/).required().error(new Error('请输入6-16位的密码，不能包含特殊字符')),
        role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
        state: Joi.number().valid(0, 1).required().error(new Error('状态值非法'))
    };

    // 验证数据
    return Joi.validate(user, schema);
}

module.exports = {
    User,
    validateUser
};